<?php
/**
 * Contrato form.
 *
 * @package    saveenergy
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ContratoForm extends BaseContratoForm
{
  public function configure()
  {
      //eliminamos los campos que no queremos que se muestren en el formulario de añadir y editar eliminamos su widget y su validador
      unset(
          $this['created_at'],$this['updated_at']
      );

      //echo $sf_request->getParameter('nombre');

      //modificamos el valor de algunas etiquetas(<label>)
      $this->widgetSchema->setLabels(array(
         'companiaAnterior' => 'Compañía anterior',
         'tarifaFirmada' => 'Tarifa firmada',
         'consumoAnual' => 'Consumo anual',
         'numeroCuenta' => 'Numero de cuenta',
         'is_firmado' => 'Firmado?',
         'is_enviado' => 'Enviado?',
         'is_recibido' => 'Recibido?',
         'is_tramitado' => 'Tramitado?',
         'FechaFirma' => 'Fecha de firma',//las fechas no las cambia. !Mirar!
         'FechaEnvio' => 'Fecha de envio',
         'FechaTramitacion' => 'Fecha de tramitacion',
         'is_incidencia' => 'Tiene indicendias?',
         'fechaVencimiento' => 'Fecha de vencimiento',
         'fechaDelegado' => 'Fecha de recepcion del contrato del delgado'
      ));

      //Formateo de las fechsas 
      $this->widgetSchema['fechaFirma'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaEnvio'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaTramitacion'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaVencimiento'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaDelegado'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaRecibida'] = new sfWidgetFormI18nDate(array('culture' => 'es'));
      $this->widgetSchema['fechaRevision'] = new sfWidgetFormI18nDate(array('culture' => 'es'));

      //Añadir radiobuttons para el campo tipo
      $this->widgetSchema['tipo'] = new sfWidgetFormChoice(array(
      'choices'  => Doctrine_Core::getTable('Contrato')->getTypes(),
      'expanded' => true,
      ));

      //Cambiamos el validador para restringir opciones
      $this->validatorSchema['tipo'] = new sfValidatorChoice(array(
      'choices' => array_keys(Doctrine_Core::getTable('Contrato')->getTypes()),
      ));

      //Cambiamos el widget a file input tag porque la columna path almacenará el nombre del archivo
      $this->widgetSchema['ruta'] = new sfWidgetFormInputFile(array(
      'label' => 'Contrato',
      ));

      //Tenemos que cambiar el valor por defecto del validador
      $this->validatorSchema['ruta'] = new sfValidatorFile(array(
      'required'   => false,
      'path'       => sfConfig::get('sf_upload_dir').'/contratos',
      'mime_types' => 'web_images',
      ));

      //Mensaje de ayuda, pero aqui me pone un <br> y queda mas espaciado que hacerlo en el backend
      //$this->widgetSchema->setHelp('is_firmado', 'Si el contrato ha sido firmado o no');
  }

//  public function updateObject($values = null)
//  {
//    $object = parent::updateObject();
//    $this->updateRuta();
//    return $object;
//  }
  
  protected function updateArchivoCssEspecifico()
  {
    // tenemos que sobrescribir el campo y añadir el archivo ya que los archivos los guarda con extension txt
    $path = sfConfig::get('sf_upload_dir');
    $file = $this->getValue('ruta');
    if(!empty($file))
    {
      // borramos el archivo creado por el validador
      if (file_exists($path.'/'.$this->getObject()->getRuta()))
      {
        @unlink($path.'//'.$this->getObject()->getRuta());
      }
      if ('.csv' !== $file->getOriginalExtension())
      {
        throw new LogicException('Solo se permiten extensiones csv');
      }
      // guardamos el archivo y actualizamos el objeto
      $filename = sha1($file->getOriginalName()).$file->getOriginalExtension();

      $file->save($path.'/'.$filename);
      $this->object->setRuta($filename);
      $this->object->save();
    }
  } 
}
